'use strict';
// 登陆

const db = uniCloud.database();
const collection = db.collection('users');

// 引入crypto模块
const CryptoJS = require('crypto-js');
// 设置密钥
let key = 'asdqweasdqwe123asdf1234dfs123'; // 密钥用于加密和解密

// 引入jsonwebtoken
const jwt = require('jsonwebtoken');

exports.main = async (event, context) => {
	//event为客户端上传的参数
	const {
		username,
		password
	} = event;

	// 先找出这个用户
	const res = await collection.where({ username }).get();
	if (res.data.length === 0) {
		return {
			code: 1,
			msg: '用户不存在'
		};
	}
	// 解密密码
	let cryptedPassword = CryptoJS.AES.decrypt(res.data[0].encryptedString, key).toString(CryptoJS.enc.Utf8);
	// 如果没有有密码匹配，则返回
	if (cryptedPassword !== password) {
		return {
			code: 1,
			msg: '用户名或密码错误',
			data: cryptedPassword
		};
	}

	// 登陆成功,使用jwt生成token
	const secretKey = 'youarebest*v*';
	const token = jwt.sign({ _id: res.data[0]._id }, secretKey, { expiresIn: '7h' });

	return {
		code: 0,
		msg: '登陆成功',
		data: res.data[0],
		token
	};
};